package cn.thinkjoy.tecc.cop.tutor.api;

import cn.thinkjoy.common.domain.SearchFilter;
import cn.thinkjoy.common.domain.view.BizData4Page;
import cn.thinkjoy.common.protocol.RequestT;
import cn.thinkjoy.common.protocol.ResponseT;
import cn.thinkjoy.cop.domain.Banner;
import cn.thinkjoy.cop.domain.Certified;
import cn.thinkjoy.cop.domain.Complain;
import cn.thinkjoy.cop.domain.TutorUser;
import cn.thinkjoy.tecc.cop.tutor.dto.TutorDTO;
import cn.thinkjoy.tecc.cop.tutor.dto.TutorTradeDTO;
import cn.thinkjoy.tecc.cop.tutor.dto.TutorTradeItemDTO;
import retrofit.Callback;
import retrofit.http.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 找家教面向学生端的接口
 * <p/>
 * 创建时间: 15/3/9 下午2:17<br/>
 *
 * @author qyang
 * @since v0.0.1
 */
public interface ITutorService4Supply {
    /**
     * 获取 学生 发布的找家教信息
     * @param token
     * @param searchFilter 查询参数
     * @param callBack
     */
    @POST("/tutor/supply/tutors")
    void tutors(@Query("access_token") String token, @Body RequestT<SearchFilter> searchFilter, Callback<ResponseT<BizData4Page<TutorDTO>>> callBack);

//    /**
//     * 获取 家长 发布的找家教信息
//     * @param token
//     * @param searchFilter 查询参数
//     * @param callBack
//     */
//    @POST("/tutor/demand/tutors")
//    void tutors4Parents(@Query("access_token") String token, @Body RequestT<SearchFilter> searchFilter, Callback<ResponseT<BizData4Page<TutorDTO>>> callBack);

    /**
     * 根据id获取找家教详情
     * @param token
     * @param callBack
     */
    @GET("/tutor/supply/tutor/{tutorId}")
    void tutor(@Query("access_token") String token, @Path("tutorId") long tutorId, Callback<ResponseT<TutorDTO>> callBack);

    /**
     * 学生发布找家教详情
     * @param token
     * @param callBack
     */
    @POST("/tutor/supply/publish")
    void publish(@Query("access_token") String token ,@Body RequestT<TutorDTO> tutorDTO, Callback<ResponseT<Object>> callBack);

    /**
     * 学生发布找家教详情
     * @param token
     * @param callBack
     */
    @POST("/tutor/supply/republish")
    void republish(@Query("access_token") String token ,@Query("isRepublish") boolean isRepublish,@Body RequestT<TutorDTO> tutorDTO, Callback<ResponseT<Object>> callBack);


    /**
     * 学生发布找家教信息记录
     * @param curPage
     * @return
     */
    @GET(value = "/tutor/supply/publishrecords/{curPage}")
    void publishRecords(@Query("access_token") String token, @Path("curPage") int curPage, Callback<ResponseT<BizData4Page<TutorDTO>>> callBack) ;

    /**
     * 学生发布找家教信息历史记录
     * @param curPage
     * @return
     */
    @GET(value = "/tutor/supply/hispublishrecords/{curPage}")
    void hisPublishRecords(@Query("access_token") String token, @Path("curPage") int curPage, Callback<ResponseT<BizData4Page<TutorDTO>>> callBack) ;






    /**
     * 学生 申请家教
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/trade/{tutorId}/{buyerId}")
    void trade(@Query("access_token") String token, @Path("tutorId") long tutorId, @Path("buyerId") long buyerId, Callback<ResponseT<Object>> callBack);

    /**
     * 同意 申请家教记录
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/tradeagree/{tradeId}")
    void tradeAgreen(@Query("access_token") String token,@Path("tradeId") long tradeId, Callback<ResponseT<Object>> callBack);



    /**
     * 拒绝  申请家教记录
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/traderefuse/{tradeId}")
    void tradeRefuse(@Query("access_token") String token,@Path("tradeId") long tradeId, Callback<ResponseT<Object>> callBack);



    /**
     * 结束家教
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/tradeend/{tradeId}")
    void tradeEnd(@Query("access_token") String token,@Path("tradeId") long tradeId, Callback<ResponseT<Object>> callBack);

    /**
     * 学生 申请家教评论
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/applycomment/{tradeId}")
    void applyComment(@Query("access_token") String token,@Path("tradeId") long tradeId, Callback<ResponseT<Integer>> callBack);

    /**
     * 学生 发出的申请家教记录
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/applys/{curPage}")
    void applys(@Query("access_token") String token,@Path("curPage") int curPage,Callback<ResponseT<BizData4Page<TutorTradeDTO>>> callBack) ;

    /**
     * 学生 收到的申请家教记录
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/receives/{curPage}")
    void receives(@Query("access_token") String token,@Path("curPage") int curPage,Callback<ResponseT<BizData4Page<TutorTradeDTO>>> callBack) ;

    /**
     * 学生 正在进行的家教记录
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/trades/{curPage}")
    void trades(@Query("access_token") String token,@Path("curPage") int curPage,Callback<ResponseT<BizData4Page<TutorTradeDTO>>> callBack) ;

    /**
     * 学生 历史的家教记录
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/histrades/{curPage}")
    void histrades(@Query("access_token") String token,@Path("curPage") int curPage,Callback<ResponseT<BizData4Page<TutorTradeDTO>>> callBack) ;




    /**
     * 学生端个人展示详情
     * @return
     */
    @GET(value = "/tutor/user/info")
    void getTutorUser(@Query("access_token") String token,Callback<ResponseT<TutorUser>> callBack);



    /**
     * 学生端个人评论
     * @param curPage
     * @return
     */
    @GET(value = "/tutor/user/comments/{curPage}")
    void Comments(@Query("access_token") String token, @Path("curPage") int curPage,Callback<ResponseT<BizData4Page<TutorTradeItemDTO>>> callBack) ;

    /**
     * 学生端家教评论
     * @param curPage
     * @return
     */
    @GET(value = "/tutor/user/comments4trade/{curPage}/{tradeId}")
    void CommentsTrade(@Query("access_token") String token, @Path("curPage") int curPage
            , @Path("tradeId") long tradeId,Callback<ResponseT<BizData4Page<TutorTradeItemDTO>>> callBack) ;

    /**update
     * 学生端个人修改授课信息
     * @return
     */
    @POST(value = "/tutor/user/infoupdate")
    void tutorInfoUpdate(@Query("access_token") String token,@Body RequestT<TutorUser> tutorUser, Callback<ResponseT<Object>> callBack) ;


    /**
     * 学生端修改个人授课时间信息
     * @return
     */
    @POST(value = "/tutor/user/weektimeupdate")
     void weektimeUpdate(@Query("access_token") String token,@Body RequestT<String> request, Callback<ResponseT<Object>> callBack) ;
    /**update
     * 学生端修改个人介绍信息
     * @return
     */
    @POST(value = "/tutor/user/introduceupdate")
    void introduceUpdate(@Query("access_token") String token,@Body RequestT<String> request, Callback<ResponseT<Object>> callBack) ;


    /**
     * banner图片展示
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/banner")
    void banner(@Query("access_token") String token,Callback<ResponseT<List<Banner>>> callBack) ;

    /**
     * 学生身份认证
     * @param token
     * @return
     */
    @POST(value = "/tutor/supply/certified")
    void certified(@Query("access_token") String token, @Body RequestT<Certified> request, Callback<ResponseT<Object>> callBack);

    /**
     * 学生身份认证成功
     * @param token
     * @return
     */
    @POST(value = "/tutor/supply/certifiedsucc")
    void certifiedSucc(@Query("access_token") String token,  @Body RequestT<Certified> request, Callback<ResponseT<Object>> callBack);
    /**
     * 学生端取消发布
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/cancel/{id}")
    void cancel(@Query("access_token") String token, @Path("id") long id, Callback<ResponseT<Object>> callBack);

    /**
     * 学生端投诉家长信息
     * @param token
     * @return
     */
    @POST(value = "/tutor/user/complain")
    void complain(@Query("access_token") String token,@Body RequestT<Complain> request, Callback<ResponseT<Integer>> callBack);

    /**
     * 学生端投诉家长信息
     * @param token
     * @return
     */
    @POST(value = "/tutor/user/complain-exist")
    void complainExist(@Query("access_token") String token,@Body RequestT<Complain> request, Callback<ResponseT<Integer>> callBack);

    /**
     * 学生 申请家教判断24小时内是否申请过
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/trade-exist/{tutorId}/{buyerId}")
    void tradeExist(@Query("access_token") String token, @Path("tutorId") long tutorId, @Path("buyerId") long buyerId, Callback<ResponseT<Integer>> callBack);

    /**
     * 学生取消身份认证成功
     * @param token
     * @return
     */
    @GET(value = "/tutor/supply/certifiedcancel")
    void certifiedCanel(@Query("access_token") String token,  Callback<ResponseT<Object>> callBack);


    @GET(value = "/tutor/supply/publish-count")
    void publishcount(@Query("access_token") String token, Callback<ResponseT<Integer>> callBack);

}
